package com.app.studyroom.model;

import android.content.Context;
import android.util.AttributeSet;

import com.zeeshan.material.multiselectionspinner.MultiSelectionSpinner;

import java.util.ArrayList;
import java.util.List;

public class MyMultiSelectionSpinner extends MultiSelectionSpinner {

    public MyMultiSelectionSpinner(Context context) {
        super(context);
    }

    public MyMultiSelectionSpinner(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyMultiSelectionSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    /**
     * 自定义方法：只清除已选项，不清除列表
     */
    public void clearSelectionOnly() {
        if (getSelectedItems() != null) {
            getSelectedItems().clear();
        }
        setText("");
        invalidate();  // 可选，用于刷新视图
    }

    /**
     * 自定义方法：根据一组选中的显示名称，设置多选选中状态
     */
    public void setSelection(List<String> selectedValues) {
        List<Object> items = getItems();
        if (selectedValues == null || items == null) return;

        List<Object> selectedItems = new ArrayList<>();
        for (Object item : items) {
            if (selectedValues.contains(item.toString())) {
                selectedItems.add(item);
            }
        }

        // 更新显示文字
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < selectedItems.size(); i++) {
            if (i > 0) builder.append(", ");
            builder.append(selectedItems.get(i).toString());
        }

        // 设置当前文本和选中项
        setText(builder.toString());

        // 注意：要更新 mSelectedItems 需要用父类的方式重新设置，不然 UI 不会刷新
        for (Object item : selectedItems) {
            super.setSelection(item);
        }
    }
}
